import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';

import 'index.dart';
import '../../home/home_index/index.dart';
import '../../discover/discover_index/index.dart';
import '../../message/message_index/index.dart';
import '../../my/my_index/index.dart';
import '../../../common/utils/index.dart';

class MainPage extends StatefulWidget {
  const MainPage({Key? key}) : super(key: key);

  @override
  State<MainPage> createState() => _MainPageState();
}

class _MainPageState extends State<MainPage>
    with AutomaticKeepAliveClientMixin {
  @override
  bool get wantKeepAlive => true;

  @override
  Widget build(BuildContext context) {
    super.build(context);
    return const _MainViewGetX();
  }
}

class _MainViewGetX extends GetView<MainController> {
  const _MainViewGetX({Key? key}) : super(key: key);

  // 上次按返回键的时间
  static DateTime? _lastBackPressed;
  
  // 退出提示的持续时间（2秒内再次按返回键才退出）
  static const Duration _exitTimeLimit = Duration(seconds: 2);
  

  // 构建主要内容区域 - 使用索引切换页面而不是嵌套路由
  // 新顺序：0-首页, 1-发现, 2-消息, 3-我的
  Widget _buildMainContent() {
    return Obx(() {
      // 根据当前索引显示对应页面
      switch (controller.currentIndex.value) {
        case 0:
          return GetBuilder<HomeIndexController>(
            id: "home_index",
            builder: (controller) => const HomeIndexPage(),
          );
        case 1:
          return GetBuilder<DiscoverIndexController>(
            id: "discover_index",
            builder: (controller) => const DiscoverIndexPage(),
          );
        case 2:
          return GetBuilder<MessageIndexController>(
            id: "message_index",
            builder: (controller) => const MessageIndexPage(),
          );
        case 3:
          return GetBuilder<MyIndexController>(
            id: "my_index",
            builder: (controller) => const MyIndexPage(),
          );
        default:
          // 默认显示首页
          return GetBuilder<HomeIndexController>(
            id: "home_index",
            builder: (controller) => const HomeIndexPage(),
          );
      }
    });
  }



  /// 处理返回键按下事件
  Future<bool> _onWillPop() async {
    final now = DateTime.now();
    
    // 如果是第一次按返回键，或者距离上次按返回键超过了时间限制
    if (_lastBackPressed == null || 
        now.difference(_lastBackPressed!) > _exitTimeLimit) {
      
      // 记录这次按键时间
      _lastBackPressed = now;
      
      // 显示退出提示
      _showExitHint();
      
      // 不退出应用
      return false;
    }
    
    // 第二次按返回键且在时间限制内，退出应用
    controller.printRouteHistory(); // 打印调试信息
    debugPrint('🚪 用户确认退出应用');
    _exitApp();
    return true;
  }
  
  /// 显示退出提示
  void _showExitHint() {
    debugPrint('🔙 用户按下返回键，显示退出提示');
    
    // 使用 LoadingUtil 显示轻提示
    LoadingUtil.toast(
      '再按一次退出',
      duration: _exitTimeLimit,
    );
  }
  
  /// 退出应用
  void _exitApp() {
    debugPrint('👋 应用即将退出');
    
    // 关闭所有提示
    LoadingUtil.dismiss();
    
    // 退出应用
    // 在Android上使用SystemNavigator.pop()
    // 在iOS上这个方法不会真正退出应用（iOS不允许应用自行退出）
    SystemNavigator.pop();
  }

  @override
  Widget build(BuildContext context) {
    // 设置主页面状态栏样式 - 浅色背景使用深色图标
    SystemUIUtils.setTransparentStatusBarDark();
    
    return GetBuilder<MainController>(
      id: "main", // 不使用init参数，使用预先注册的控制器
      builder: (_) {
        return WillPopScope(
          onWillPop: _onWillPop,
          child: Scaffold(
            // appBar: AppBar(
            //   title: Obx(() => Text(controller.currentPageTitle.value)),
            //   centerTitle: true,
            //   backgroundColor: Colors.blue.shade700,
            //   foregroundColor: Colors.white,
            //   elevation: 0,
            // ),
            body: _buildMainContent(),
            // 去掉底部安全区域的内边距
            bottomNavigationBar: SafeArea(
              top: false,
              bottom: false, // 关键：去掉底部安全区域
              child: _buildBottomNavigationBar(),
            ),
          ),
        );
      },
    );
  }
  
  /// 构建底部导航栏（仅文字，无图标，无水波纹）
  /// 顺序：首页、大厅、消息、我的
  /// 首页时背景黑色，其他页面白色
  Widget _buildBottomNavigationBar() {
    return Obx(() {
      // 判断是否是首页（索引0）
      final isHomePage = controller.currentIndex.value == 0;
      
      return Theme(
        data: ThemeData(
          splashFactory: NoSplash.splashFactory, // 去掉水波纹效果
          highlightColor: Colors.transparent, // 去掉高亮效果
          splashColor: Colors.transparent, // 去掉点击涟漪效果
        ),
        child: BottomNavigationBar(
          currentIndex: controller.currentIndex.value,
          onTap: controller.onBottomNavTap,
          type: BottomNavigationBarType.fixed,
          backgroundColor: isHomePage ? Colors.black : Colors.white, // 首页黑色，其他白色
          selectedItemColor: isHomePage ? Colors.white : Colors.black, // 首页选中白色，其他黑色
          unselectedItemColor: isHomePage ? Colors.grey.shade400 : Colors.grey, // 首页未选中浅灰，其他灰色
          selectedFontSize: 16, // 选中文字大小
          unselectedFontSize: 16, // 未选中文字大小
          selectedLabelStyle: const TextStyle(
            fontWeight: FontWeight.bold, // 选中时加粗
          ),
          unselectedLabelStyle: const TextStyle(
            fontWeight: FontWeight.bold, // 未选中时也加粗
          ),
          items: const [
            BottomNavigationBarItem(
              icon: SizedBox.shrink(), // 隐藏图标
              label: '首页',
            ),
            BottomNavigationBarItem(
              icon: SizedBox.shrink(), // 隐藏图标
              label: '大厅',
            ),
            BottomNavigationBarItem(
              icon: SizedBox.shrink(), // 隐藏图标
              label: '消息',
            ),
            BottomNavigationBarItem(
              icon: SizedBox.shrink(), // 隐藏图标
              label: '我的',
            ),
          ],
        ),
      );
    });
  }
}
